package main

import (
	"fmt"
	"reflect"
)

func main() {
	var name string = "Go 编程"
	var age int = 27

	var isSet bool = reflect.ValueOf(age).CanSet()
	fmt.Println("settability of name: ", isSet)
	// reflect.ValueOf(age).SetInt(18)
	fmt.Printf("name: %s\tage: %d\n", name, age)

	// 使用映射修改原数据
	// 1、取变量地址，原数据对象的指针
	v := reflect.ValueOf(&age)
	// 2、使用Elem函数进行处理
	v = v.Elem()
	fmt.Println("settability of name: ", v.CanSet())
	// 3、修改数据
	v.SetInt(18)
	fmt.Printf("name: %s\tage: %d", name, age)
}
